package com.myqf.d6_lambda_函数式接口_方法引用.monday.lambda.lambda演示.demo0初级_lambda演示;


import java.util.ArrayList;
import java.util.List;

/**
 * 作者：黎杭
 * 日期：2020/2/17
 * <p>
 * 模拟大王选压寨夫人的代码
 */
public class Test {
    public static void main(String[] args) {
        // 第一步，先创建一百个人，不管男女，随机创建
        List<User> list = new ArrayList<>();// 这个集合拿来装这一百个候选人

        for (int x = 0; x < 100; x++) {
            String sex = Math.random() < 0.5 ? "女" : "男";// 随机取小于0.5就是女，否则是男
            User user = new User("竞选人" + x, 60 + x, 10.0 + x, x, sex);// crtl+q提示参数
            list.add(user);
        }
        System.err.println(list);
        // 大王要求1：把年龄 16岁到26岁之间的女娃娃给我找出来！
        List<User> users = findUsersByCondition(list);// 选出符合大王口味的人
        System.err.println(users);
        // 大王要求2：这次年龄扩大到14岁到30岁女生都行

        List<User> users2 = findUsersByCondition2(list);// 选出符合大王口味的人
        System.err.println(users2);
        // 大王又说了，不行，这次我不仅要选女的，男的也给我找回来，找回来给我搬砖
        // 这个时候就会发现一个问题，客户的需求总是在变化，每变化一次，我们就要修改方法，或者新增代码


    }

    public static List<User> findUsersByCondition(List<User> list) {// 将list作为参数传入，list是所有候选人
        List<User> resList = new ArrayList<>();// 先准备一个结果集，符合条件的人，就放到这个集合里边，等下返回
        for (User u : list) {
            if (16 < u.getAge()  // 如果是大于16岁，成年了
                    && u.getAge() < 26 // 小于26岁，非常青春
                    && "女".equals(u.getSex())) {// 是女娃娃
                resList.add(u);// 把当前这个符合条件的女娃娃放到结果集里边
            }
        }
        return resList;// 返回所有符合条件的人，给大王
    }

    public static List<User> findUsersByCondition2(List<User> list) {// 将list作为参数传入，list是所有候选人
        List<User> resList = new ArrayList<>();// 先准备一个结果集，符合条件的人，就放到这个集合里边，等下返回
        for (User u : list) {
            if (14 < u.getAge()  // 如果是大于16岁，成年了
                    && u.getAge() < 30 // 小于26岁，非常青春
                    && "女".equals(u.getSex())) {// 是女娃娃
                resList.add(u);// 把当前这个符合条件的女娃娃放到结果集里边
            }
        }
        return resList;// 返回所有符合条件的人，给大王
    }
}
